The exemplary embodiments of this invention relate generally to testing and replay systems for applications on computing devices such as mobile devices and, more particularly, to systems, methods, and apparatuses for recording user actions and producing executable tests in the form of human-readable scripts that can be modified to create new tests.
Application development has proliferated in recent years due to an increase in the number and capabilities of handheld and tablet devices. The number of applications created and downloaded has resulted in a robust global ecosystem of software creation, application deployment, and revenue generation. The adoption of such applications has not been limited to consumers; enterprise deployment of mobile applications targeted at customers, clients, and internal employees has become widespread as companies compete for advantage despite economic challenges.
With an exponential proliferation of applications created for computing devices such as smartphones and tablets, application testing by developers has become widespread. Before an application is deployed and made available to the public, it generally undergoes a period of testing. Without such a period of testing, risks that may compromise the marketability of the application may be incurred. For example, the application may receive negative reviews and be bypassed by alternative competitive offerings immediately available to potential end users. Such an outcome motivates the desire for a testing process that gives application developers the flexibility to record all the states of an application execution and to provide playback capabilities to replicate application changes and outcomes up to any given state of interest.
Applications for computing devices pose an interesting challenge to developers. They are designed and developed in non-mobile environments, and tested either on special emulators that replicate a computing system, a mobile operating system, or on an actual mobile device. When attempting to resolve an error or bug, a developer typically uses a proprietary development kit to set breakpoints and debug code step by step. However, this approach is limited, as it does not account for field testing, which allows for testing an application in the actual context in which it will be used. For mobile applications, field testing is useful since emulators cannot always replicate the exact conditions under which an application will execute on a real device.